import 'package:flutter/material.dart';

String formatBytes(int bytes) {
  if (bytes < 1024) {
    return '$bytes B';
  } else if (bytes < 1024 * 1024) {
    return '${(bytes / 1024).toStringAsFixed(2)} KB';
  } else if (bytes < 1024 * 1024 * 1024) {
    return '${(bytes / (1024 * 1024)).toStringAsFixed(2)} MB';
  } else {
    return '${(bytes / (1024 * 1024 * 1024)).toStringAsFixed(2)} GB';
  }
}

String formatSpeed(int bytesPerSecond) {
  return '${formatBytes(bytesPerSecond)}/s';
}

String formatDuration(Duration duration) {
  String twoDigits(int n) => n.toString().padLeft(2, '0');
  String twoDigitMinutes = twoDigits(duration.inMinutes.remainder(60));
  String twoDigitSeconds = twoDigits(duration.inSeconds.remainder(60));
  return '${twoDigits(duration.inHours)}:$twoDigitMinutes:$twoDigitSeconds';
}

String formatPing(int ping) {
  if (ping < 0) {
    return 'N/A';
  } else if (ping < 100) {
    return '${ping}ms';
  } else if (ping < 1000) {
    return '${ping}ms';
  } else {
    return '${(ping / 1000).toStringAsFixed(1)}s';
  }
}

Color getPingColor(int ping) {
  if (ping < 0) {
    return const Color(0xFF95A5A6);
  } else if (ping < 100) {
    return const Color(0xFF00B894);
  } else if (ping < 300) {
    return const Color(0xFFFDCB6E);
  } else {
    return const Color(0xFFFF7675);
  }
}
